In today's information processing environment, it is becoming increasingly popular to provide voice input and output. The capability to input voice to an information processing system expands the utility of such processing systems. For example, it enables a user to remotely input data using a telephone by merely speaking into the telephone. Elaborate coding schemes using the telephone's keypad are eliminated. Additionally, the amount of data that can be input to the system is greatly expanded since it is not limited to the amount of data that can be coded in with the keypad. A further advantage of voice input is that a user who has little facility with a keyboard can enter data into the system quite easily and without spending an inordinate amount of time learning how to keypunch data.
One approach to providing voice capability to the an information processing system is to use a signal processor along with a host processor to control both the input and output of data and the processing of data within the system. Analog audio information is input, coverted to digital, gain controlled, and compressed all under the control of a signal processor. A problem that arises is how to buffer the digitized voice messages that are being input to the system. Such a problem arises in a system in which the signal processor has a relatively small amount of buffer memory and needs to transfer small blocks of data quite frequently to the host system, while the host system has a large amount of memory available and needs to transfer large blocks of data to storage media less frequently in order to match the performance characteristics of the media. Means must be provided for buffering the voice information from the input to the disk file. This buffering must be done on a real time basis so that application programs executing on the system can store the buffered voice data on disk, as the user is speaking, so as to allow continuous speech without limiting the amount of voice data that can be input to the system. A buffer that is limited to accepting an entire voice message at a time provides an artificial approach to inputting voice data to the system. To be useful, the voice buffering approach should be able to accept the voice data as it is entered without limiting it to predetermined length.
In order to provide this real time buffering capability to a disk storage medium, the buffering mechanism must be flexible enough to allow the application to configure the size of the blocks to be transferred to disk. Further, the buffering mechanism must be able to provide continuous feedback to the application as to whether the previous transfers are keeping up with the real time production of speech data.
U.S. Pat. No. 4,193,123 discloses a first-in, first-out buffer for use with digital words representing speech segments. The digital words are input to the buffer at a first rate and read from the buffer at a second slower rate and then applied to a D/A convertor. No bit representing speech is read from the buffer until a predetermined period of time after a first bit has been written into the buffer. Fault signals are generated when the buffer becomes empty and when the buffer becomes full. The concept of buffering voice data in real time is not disclosed.
An asynchronous buffering device is disclosed in U.S. Pat. No. 3,727,204 wherein the buffer includes an information shift register and a bookkeeping register. This buffering approach adapts the shift rates of information in the shift register and the bookkeeping register to each other, i.e., the approach forces the two registers into a timing relationship. It does not enable the two to run at their own rates and to adapt to the flow of data into the buffer.
U.S. Pat. No. 3,166,715 describes an asynchronous shift register which operates at a variety of recording densities and at a variety of speeds of the recording media. The concept of a consumer and producer of buffered data operating at different rates is not disclosed.
Thus, there is a need for a voice buffer management system to handle the situation where resources which manipulate the buffer run at different speeds and have different record size requirements. This need arises because in a signal processing environment, voice messages are typically produced and consumed at unpredictable times and stored on a variety of storage media. As a result, the contention and queuing for buffer spaces become difficult to manage.